package com.ruoyi.system.service.impl;

import java.util.List;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.domain.vo.SysFormPlanListVo;
import com.ruoyi.system.domain.vo.SysFormPlanVo;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.SysFormPlanMapper;
import com.ruoyi.system.domain.SysFormPlan;
import com.ruoyi.system.service.ISysFormPlanService;

/**
 * 单计划Service业务层处理
 *
 * @author ruoyi
 * @date 2025-08-31
 */
@Service
public class SysFormPlanServiceImpl implements ISysFormPlanService {
    @Autowired
    private SysFormPlanMapper sysFormPlanMapper;

    /**
     * 查询单计划
     *
     * @param planId 单计划主键
     * @return 单计划
     */
    @Override
    public SysFormPlan selectSysFormPlanByPlanId(Long planId) {
        return sysFormPlanMapper.selectSysFormPlanByPlanId(planId);
    }

    /**
     * 查询单计划列表
     *
     * @param sysFormPlan 单计划
     * @return 单计划
     */
    @Override
    public List<SysFormPlan> selectSysFormPlanList(SysFormPlan sysFormPlan) {


        return sysFormPlanMapper.selectSysFormPlanList(sysFormPlan);
    }

    /**
     * 新增单计划
     *
     * @param sysFormPlan 单计划
     * @return 结果
     */
    @Override
    public AjaxResult insertSysFormPlan(SysFormPlan sysFormPlan) {

        List<SysFormPlan> sysFormPlans = sysFormPlanMapper.checkAlreadyCheck(sysFormPlan);

        if (CollectionUtils.isNotEmpty(sysFormPlans)) {
            return AjaxResult.error("该日期下该项目该表单已检查!");
        }

        sysFormPlan.setCreateTime(DateUtils.getNowDate());

        sysFormPlan.setStatus("0");

        sysFormPlanMapper.insertSysFormPlan(sysFormPlan);
        return AjaxResult.success();
    }

    /**
     * 修改单计划
     *
     * @param sysFormPlan 单计划
     * @return 结果
     */
    @Override
    public int updateSysFormPlan(SysFormPlan sysFormPlan) {
        sysFormPlan.setUpdateTime(DateUtils.getNowDate());
        return sysFormPlanMapper.updateSysFormPlan(sysFormPlan);
    }

    /**
     * 批量删除单计划
     *
     * @param planIds 需要删除的单计划主键
     * @return 结果
     */
    @Override
    public int deleteSysFormPlanByPlanIds(Long[] planIds) {
        return sysFormPlanMapper.deleteSysFormPlanByPlanIds(planIds);
    }

    /**
     * 删除单计划信息
     *
     * @param planId 单计划主键
     * @return 结果
     */
    @Override
    public int deleteSysFormPlanByPlanId(Long planId) {
        return sysFormPlanMapper.deleteSysFormPlanByPlanId(planId);
    }


    @Override
    public List<SysFormPlanListVo> selectFormPlanList(Long projectId) {


        List<SysFormPlanListVo> formPlanList = sysFormPlanMapper.selectFormPlanList(projectId);


        return formPlanList;
    }
}
